As networking technology and bandwidth capabilities have increased, the delivery of richer multimedia resources has also increased and improved in quality and accessibility. Internet services such as Google Inc.'s YOUTUBE™ allow individuals to access video content that has been stored to remote servers. Services are also available that provide web seminars, called “webinars”, in which live or recorded multimedia or video content is broadcast to participants who register or request to receive the streaming data. Live video broadcasting, in particular, provides numerous challenges to ensure that users receive a reliable and cognizable representation of the live content.
In general, streaming live video content entails a number of steps to process the raw, image data into the compressed/encoded format to be transmitted to the recipient. Raw video data captured by a video recorder is typically input into a computer-based signal processing system for encoding into the resulting format and bitrate. The raw video data generally comes into the system divided into a series of frames. Each frame represents a snap shot of the live content based on the recording or sampling rate of the recording equipment, which is typically given in frames per second (fps). The encoding system may determine various frames to drop from the stream in order to meet a certain bitrate or quality requirement. Furthermore, a variety of different filtering or computational processes may be applied to the frames to reduce noise or change the resulting size of the frames.
In the encoding process, each frame is broken down into multiple macroblocks, which are blocks of pixels measuring 8 pixels-by-8 pixels. The macroblocks are then analyzed and assigned a particular mode based on the relative content between the macroblock and a previous macroblock. In order to conserve bandwidth, macroblocks can be encoded either as intra-mode blocks, in which all of the video information in the block is preserved and encoded, or as inter-mode blocks, in which only the video information representing the difference or delta from another macroblock is encoded. This process is similar to the animation process in which key frames include all of the information for the scene and subsequent frames until the next key frame only include the stepped changes from the key frame. Assigning macroblock modes generally entails comparing the current macroblock with one or more previous macroblocks and analyzing any changes that occur in any of the elements in the image data. Based on the level of movement or change in such elements, the encoding system will determine whether the current macroblock should be an intramode block or an intermode block.
Depending on the particular encoding scheme, there are various different types of macroblock modes. However, in general, those various types can still be broken into mode that do not depend on any other macroblock, i.e., intramode blocks, and nodes that depend on other blocks in order to calculate a difference or other such relationship, i.e., intermode blocks.
Once the appropriate mode is assigned to a macroblock, the macroblock image data is processed or transformed into the frequency domain by applying a Fourier-related transform to it. Typically, a discrete cosine transform (dct), which is a type of Fourier transform, is used in signal compression. The image processing is performed on all of the image data in intramode macroblocks and on the delta information in intermode blocks. After processing the image data using the transform, the result is typically divided by the quantization value. The quantization value is a measure of the detail that is desired to represent the sampled continuous signal data in the digital signal. The quantization value will determine how many bits will be used to represent that signal, and, thus, is related to the quality and the bitrate of the desired data stream. Therefore, the specific quantization value used will be determined based on the bitrate and quality intended. The result of quantizing the transformed signal data generally results in 64 coefficients. These coefficients, of which all or a subset may be used depending on the bitrate, are then used to encode or compress the macroblocks. Each macroblock of each frame of the live streaming video goes through this computationally intensive process.
Presentation of video or multimedia content is not generally limited to only those users having a particular bandwidth or bitrate availability. Video may be delivered over various bitrates according to the bitrate that the user has access to or desires to use. Thus, it is common practice to provide live video broadcasts in multiple bitrates (MBRs). When the user requests access to the live broadcast, he or she will select a desired bitrate to use. In general services that are providing the live video broadcast generate the encoded streams in the various bitrates that are offered to users so that the user simply selects the desired bitrate after which the broadcasting system directs the video stream associated with that bitrate to the user.
These services offering MBR live video broadcasting perform each of the computationally intensive processes on each stream intended for the different bitrates. Therefore, there is a large computational and processing requirement for providing such MBR live video broadcasting services. These computational and processing requirements may limit the number of services that may be capable of providing such MBR broadcasts.